home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / usb.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  47KB  |  1,147 lines

  1. #ifndef __LINUX_USB_H
  2. #define __LINUX_USB_H
  3.  
  4. #include <linux/mod_devicetable.h>
  5. #include <linux/usb_ch9.h>
  6.  
  7. #define USB_MAJOR            180
  8.  
  9.  
  10. #ifdef __KERNEL__
  11.  
  12. #include <linux/config.h>
  13. #include <linux/errno.h>        /* for -ENODEV */
  14. #include <linux/delay.h>    /* for mdelay() */
  15. #include <linux/interrupt.h>    /* for in_interrupt() */
  16. #include <linux/list.h>        /* for struct list_head */
  17. #include <linux/kref.h>        /* for struct kref */
  18. #include <linux/device.h>    /* for struct device */
  19. #include <linux/fs.h>        /* for struct file_operations */
  20. #include <linux/completion.h>    /* for struct completion */
  21. #include <linux/sched.h>    /* for current && schedule_timeout */
  22.  
  23. struct usb_device;
  24. struct usb_driver;
  25.  
  26. /*-------------------------------------------------------------------------*/
  27.  
  28. /*
  29.  * Host-side wrappers for standard USB descriptors ... these are parsed
  30.  * from the data provided by devices.  Parsing turns them from a flat
  31.  * sequence of descriptors into a hierarchy:
  32.  *
  33.  *  - devices have one (usually) or more configs;
  34.  *  - configs have one (often) or more interfaces;
  35.  *  - interfaces have one (usually) or more settings;
  36.  *  - each interface setting has zero or (usually) more endpoints.
  37.  *
  38.  * And there might be other descriptors mixed in with those.
  39.  *
  40.  * Devices may also have class-specific or vendor-specific descriptors.
  41.  */
  42.  
  43. /**
  44.  * struct usb_host_endpoint - host-side endpoint descriptor and queue
  45.  * @desc: descriptor for this endpoint, wMaxPacketSize in native byteorder
  46.  * @urb_list: urbs queued to this endpoint; maintained by usbcore
  47.  * @hcpriv: for use by HCD; typically holds hardware dma queue head (QH)
  48.  *    with one or more transfer descriptors (TDs) per urb
  49.  * @extra: descriptors following this endpoint in the configuration
  50.  * @extralen: how many bytes of "extra" are valid
  51.  *
  52.  * USB requests are always queued to a given endpoint, identified by a
  53.  * descriptor within an active interface in a given USB configuration.
  54.  */
  55. struct usb_host_endpoint {
  56.     struct usb_endpoint_descriptor    desc;
  57.     struct list_head        urb_list;
  58.     void                *hcpriv;
  59.  
  60.     unsigned char *extra;   /* Extra descriptors */
  61.     int extralen;
  62. };
  63.  
  64. /* host-side wrapper for one interface setting's parsed descriptors */
  65. struct usb_host_interface {
  66.     struct usb_interface_descriptor    desc;
  67.  
  68.     /* array of desc.bNumEndpoint endpoints associated with this
  69.      * interface setting.  these will be in no particular order.
  70.      */
  71.     struct usb_host_endpoint *endpoint;
  72.  
  73.     unsigned char *extra;   /* Extra descriptors */
  74.     int extralen;
  75. };
  76.  
  77. enum usb_interface_condition {
  78.     USB_INTERFACE_UNBOUND = 0,
  79.     USB_INTERFACE_BINDING,
  80.     USB_INTERFACE_BOUND,
  81.     USB_INTERFACE_UNBINDING,
  82. };
  83.  
  84. /**
  85.  * struct usb_interface - what usb device drivers talk to
  86.  * @altsetting: array of interface structures, one for each alternate
  87.  *     setting that may be selected.  Each one includes a set of
  88.  *     endpoint configurations.  They will be in no particular order.
  89.  * @num_altsetting: number of altsettings defined.
  90.  * @cur_altsetting: the current altsetting.
  91.  * @driver: the USB driver that is bound to this interface.
  92.  * @minor: the minor number assigned to this interface, if this
  93.  *    interface is bound to a driver that uses the USB major number.
  94.  *    If this interface does not use the USB major, this field should
  95.  *    be unused.  The driver should set this value in the probe()
  96.  *    function of the driver, after it has been assigned a minor
  97.  *    number from the USB core by calling usb_register_dev().
  98.  * @condition: binding state of the interface: not bound, binding
  99.  *    (in probe()), bound to a driver, or unbinding (in disconnect())
  100.  * @dev: driver model's view of this device
  101.  * @class_dev: driver model's class view of this device.
  102.  *
  103.  * USB device drivers attach to interfaces on a physical device.  Each
  104.  * interface encapsulates a single high level function, such as feeding
  105.  * an audio stream to a speaker or reporting a change in a volume control.
  106.  * Many USB devices only have one interface.  The protocol used to talk to
  107.  * an interface's endpoints can be defined in a usb "class" specification,
  108.  * or by a product's vendor.  The (default) control endpoint is part of
  109.  * every interface, but is never listed among the interface's descriptors.
  110.  *
  111.  * The driver that is bound to the interface can use standard driver model
  112.  * calls such as dev_get_drvdata() on the dev member of this structure.
  113.  *
  114.  * Each interface may have alternate settings.  The initial configuration
  115.  * of a device sets altsetting 0, but the device driver can change
  116.  * that setting using usb_set_interface().  Alternate settings are often
  117.  * used to control the the use of periodic endpoints, such as by having
  118.  * different endpoints use different amounts of reserved USB bandwidth.
  119.  * All standards-conformant USB devices that use isochronous endpoints
  120.  * will use them in non-default settings.
  121.  *
  122.  * The USB specification says that alternate setting numbers must run from
  123.  * 0 to one less than the total number of alternate settings.  But some
  124.  * devices manage to mess this up, and the structures aren't necessarily
  125.  * stored in numerical order anyhow.  Use usb_altnum_to_altsetting() to
  126.  * look up an alternate setting in the altsetting array based on its number.
  127.  */
  128. struct usb_interface {
  129.     /* array of alternate settings for this interface,
  130.      * stored in no particular order */
  131.     struct usb_host_interface *altsetting;
  132.  
  133.     struct usb_host_interface *cur_altsetting;    /* the currently
  134.                      * active alternate setting */
  135.     unsigned num_altsetting;    /* number of alternate settings */
  136.  
  137.     int minor;            /* minor number this interface is bound to */
  138.     enum usb_interface_condition condition;        /* state of binding */
  139.     struct device dev;        /* interface specific device info */
  140.     struct class_device *class_dev;
  141. };
  142. #define    to_usb_interface(d) container_of(d, struct usb_interface, dev)
  143. #define    interface_to_usbdev(intf) \
  144.     container_of(intf->dev.parent, struct usb_device, dev)
  145.  
  146. static inline void *usb_get_intfdata (struct usb_interface *intf)
  147. {
  148.     return dev_get_drvdata (&intf->dev);
  149. }
  150.  
  151. static inline void usb_set_intfdata (struct usb_interface *intf, void *data)
  152. {
  153.     dev_set_drvdata(&intf->dev, data);
  154. }
  155.  
  156. struct usb_interface *usb_get_intf(struct usb_interface *intf);
  157. void usb_put_intf(struct usb_interface *intf);
  158.  
  159. /* this maximum is arbitrary */
  160. #define USB_MAXINTERFACES    32
  161.  
  162. /**
  163.  * struct usb_interface_cache - long-term representation of a device interface
  164.  * @num_altsetting: number of altsettings defined.
  165.  * @ref: reference counter.
  166.  * @altsetting: variable-length array of interface structures, one for
  167.  *    each alternate setting that may be selected.  Each one includes a
  168.  *    set of endpoint configurations.  They will be in no particular order.
  169.  *
  170.  * These structures persist for the lifetime of a usb_device, unlike
  171.  * struct usb_interface (which persists only as long as its configuration
  172.  * is installed).  The altsetting arrays can be accessed through these
  173.  * structures at any time, permitting comparison of configurations and
  174.  * providing support for the /proc/bus/usb/devices pseudo-file.
  175.  */
  176. struct usb_interface_cache {
  177.     unsigned num_altsetting;    /* number of alternate settings */
  178.     struct kref ref;        /* reference counter */
  179.  
  180.     /* variable-length array of alternate settings for this interface,
  181.      * stored in no particular order */
  182.     struct usb_host_interface altsetting[0];
  183. };
  184. #define    ref_to_usb_interface_cache(r) \
  185.         container_of(r, struct usb_interface_cache, ref)
  186. #define    altsetting_to_usb_interface_cache(a) \
  187.         container_of(a, struct usb_interface_cache, altsetting[0])
  188.  
  189. /**
  190.  * struct usb_host_config - representation of a device's configuration
  191.  * @desc: the device's configuration descriptor.
  192.  * @interface: array of pointers to usb_interface structures, one for each
  193.  *    interface in the configuration.  The number of interfaces is stored
  194.  *    in desc.bNumInterfaces.  These pointers are valid only while the
  195.  *    the configuration is active.
  196.  * @intf_cache: array of pointers to usb_interface_cache structures, one
  197.  *    for each interface in the configuration.  These structures exist
  198.  *    for the entire life of the device.
  199.  * @extra: pointer to buffer containing all extra descriptors associated
  200.  *    with this configuration (those preceding the first interface
  201.  *    descriptor).
  202.  * @extralen: length of the extra descriptors buffer.
  203.  *
  204.  * USB devices may have multiple configurations, but only one can be active
  205.  * at any time.  Each encapsulates a different operational environment;
  206.  * for example, a dual-speed device would have separate configurations for
  207.  * full-speed and high-speed operation.  The number of configurations
  208.  * available is stored in the device descriptor as bNumConfigurations.
  209.  *
  210.  * A configuration can contain multiple interfaces.  Each corresponds to
  211.  * a different function of the USB device, and all are available whenever
  212.  * the configuration is active.  The USB standard says that interfaces
  213.  * are supposed to be numbered from 0 to desc.bNumInterfaces-1, but a lot
  214.  * of devices get this wrong.  In addition, the interface array is not
  215.  * guaranteed to be sorted in numerical order.  Use usb_ifnum_to_if() to
  216.  * look up an interface entry based on its number.
  217.  *
  218.  * Device drivers should not attempt to activate configurations.  The choice
  219.  * of which configuration to install is a policy decision based on such
  220.  * considerations as available power, functionality provided, and the user's
  221.  * desires (expressed through hotplug scripts).  However, drivers can call
  222.  * usb_reset_configuration() to reinitialize the current configuration and
  223.  * all its interfaces.
  224.  */
  225. struct usb_host_config {
  226.     struct usb_config_descriptor    desc;
  227.  
  228.     /* the interfaces associated with this configuration,
  229.      * stored in no particular order */
  230.     struct usb_interface *interface[USB_MAXINTERFACES];
  231.  
  232.     /* Interface information available even when this is not the
  233.      * active configuration */
  234.     struct usb_interface_cache *intf_cache[USB_MAXINTERFACES];
  235.  
  236.     unsigned char *extra;   /* Extra descriptors */
  237.     int extralen;
  238. };
  239.  
  240. int __usb_get_extra_descriptor(char *buffer, unsigned size,
  241.     unsigned char type, void **ptr);
  242. #define usb_get_extra_descriptor(ifpoint,type,ptr)\
  243.     __usb_get_extra_descriptor((ifpoint)->extra,(ifpoint)->extralen,\
  244.         type,(void**)ptr)
  245.  
  246. /* -------------------------------------------------------------------------- */
  247.  
  248. struct usb_operations;
  249.  
  250. /* USB device number allocation bitmap */
  251. struct usb_devmap {
  252.     unsigned long devicemap[128 / (8*sizeof(unsigned long))];
  253. };
  254.  
  255. /*
  256.  * Allocated per bus (tree of devices) we have:
  257.  */
  258. struct usb_bus {
  259.     struct device *controller;    /* host/master side hardware */
  260.     int busnum;            /* Bus number (in order of reg) */
  261.     char *bus_name;            /* stable id (PCI slot_name etc) */
  262.     u8 otg_port;            /* 0, or number of OTG/HNP port */
  263.     unsigned is_b_host:1;        /* true during some HNP roleswitches */
  264.     unsigned b_hnp_enable:1;    /* OTG: did A-Host enable HNP? */
  265.  
  266.     int devnum_next;        /* Next open device number in round-robin allocation */
  267.  
  268.     struct usb_devmap devmap;    /* device address allocation map */
  269.     struct usb_operations *op;    /* Operations (specific to the HC) */
  270.     struct usb_device *root_hub;    /* Root hub */
  271.     struct list_head bus_list;    /* list of busses */
  272.     void *hcpriv;                   /* Host Controller private data */
  273.  
  274.     int bandwidth_allocated;    /* on this bus: how much of the time
  275.                      * reserved for periodic (intr/iso)
  276.                      * requests is used, on average?
  277.                      * Units: microseconds/frame.
  278.                      * Limits: Full/low speed reserve 90%,
  279.                      * while high speed reserves 80%.
  280.                      */
  281.     int bandwidth_int_reqs;        /* number of Interrupt requests */
  282.     int bandwidth_isoc_reqs;    /* number of Isoc. requests */
  283.  
  284.     struct dentry *usbfs_dentry;    /* usbfs dentry entry for the bus */
  285.  
  286.     struct class_device class_dev;    /* class device for this bus */
  287.     void (*release)(struct usb_bus *bus);    /* function to destroy this bus's memory */
  288. };
  289. #define    to_usb_bus(d) container_of(d, struct usb_bus, class_dev)
  290.  
  291.  
  292. /* -------------------------------------------------------------------------- */
  293.  
  294. /* This is arbitrary.
  295.  * From USB 2.0 spec Table 11-13, offset 7, a hub can
  296.  * have up to 255 ports. The most yet reported is 10.
  297.  */
  298. #define USB_MAXCHILDREN        (16)
  299.  
  300. struct usb_tt;
  301.  
  302. /*
  303.  * struct usb_device - kernel's representation of a USB device
  304.  *
  305.  * FIXME: Write the kerneldoc!
  306.  *
  307.  * Usbcore drivers should not set usbdev->state directly.  Instead use
  308.  * usb_set_device_state().
  309.  */
  310. struct usb_device {
  311.     int        devnum;        /* Address on USB bus */
  312.     char        devpath [16];    /* Use in messages: /port/port/... */
  313.     enum usb_device_state    state;    /* configured, not attached, etc */
  314.     enum usb_device_speed    speed;    /* high/full/low (or error) */
  315.  
  316.     struct usb_tt    *tt;         /* low/full speed dev, highspeed hub */
  317.     int        ttport;        /* device port on that tt hub */
  318.  
  319.     struct semaphore serialize;
  320.  
  321.     unsigned int toggle[2];        /* one bit for each endpoint ([0] = IN, [1] = OUT) */
  322.  
  323.     struct usb_device *parent;    /* our hub, unless we're the root */
  324.     struct usb_bus *bus;        /* Bus we're part of */
  325.     struct usb_host_endpoint ep0;
  326.  
  327.     struct device dev;        /* Generic device interface */
  328.  
  329.     struct usb_device_descriptor descriptor;/* Descriptor */
  330.     struct usb_host_config *config;    /* All of the configs */
  331.  
  332.     struct usb_host_config *actconfig;/* the active configuration */
  333.     struct usb_host_endpoint *ep_in[16];
  334.     struct usb_host_endpoint *ep_out[16];
  335.  
  336.     char **rawdescriptors;        /* Raw descriptors for each config */
  337.  
  338.     int have_langid;        /* whether string_langid is valid yet */
  339.     int string_langid;        /* language ID for strings */
  340.  
  341.     struct list_head filelist;
  342.     struct dentry *usbfs_dentry;    /* usbfs dentry entry for the device */
  343.  
  344.     /*
  345.      * Child devices - these can be either new devices
  346.      * (if this is a hub device), or different instances
  347.      * of this same device.
  348.      *
  349.      * Each instance needs its own set of data structures.
  350.      */
  351.  
  352.     int maxchild;            /* Number of ports if hub */
  353.     struct usb_device *children[USB_MAXCHILDREN];
  354. };
  355. #define    to_usb_device(d) container_of(d, struct usb_device, dev)
  356.  
  357. extern struct usb_device *usb_get_dev(struct usb_device *dev);
  358. extern void usb_put_dev(struct usb_device *dev);
  359.  
  360. extern void usb_lock_device(struct usb_device *udev);
  361. extern int usb_trylock_device(struct usb_device *udev);
  362. extern int usb_lock_device_for_reset(struct usb_device *udev,
  363.         struct usb_interface *iface);
  364. extern void usb_unlock_device(struct usb_device *udev);
  365.  
  366. /* USB port reset for device reinitialization */
  367. extern int usb_reset_device(struct usb_device *dev);
  368.  
  369. extern struct usb_device *usb_find_device(u16 vendor_id, u16 product_id);
  370.  
  371. /*-------------------------------------------------------------------------*/
  372.  
  373. /* for drivers using iso endpoints */
  374. extern int usb_get_current_frame_number (struct usb_device *usb_dev);
  375.  
  376. /* used these for multi-interface device registration */
  377. extern int usb_driver_claim_interface(struct usb_driver *driver,
  378.             struct usb_interface *iface, void* priv);
  379.  
  380. /**
  381.  * usb_interface_claimed - returns true iff an interface is claimed
  382.  * @iface: the interface being checked
  383.  *
  384.  * Returns true (nonzero) iff the interface is claimed, else false (zero).
  385.  * Callers must own the driver model's usb bus readlock.  So driver
  386.  * probe() entries don't need extra locking, but other call contexts
  387.  * may need to explicitly claim that lock.
  388.  *
  389.  */
  390. static inline int usb_interface_claimed(struct usb_interface *iface) {
  391.     return (iface->dev.driver != NULL);
  392. }
  393.  
  394. extern void usb_driver_release_interface(struct usb_driver *driver,
  395.             struct usb_interface *iface);
  396. const struct usb_device_id *usb_match_id(struct usb_interface *interface,
  397.                      const struct usb_device_id *id);
  398.  
  399. extern struct usb_interface *usb_find_interface(struct usb_driver *drv,
  400.         int minor);
  401. extern struct usb_interface *usb_ifnum_to_if(struct usb_device *dev,
  402.         unsigned ifnum);
  403. extern struct usb_host_interface *usb_altnum_to_altsetting(
  404.         struct usb_interface *intf, unsigned int altnum);
  405.  
  406.  
  407. /**
  408.  * usb_make_path - returns stable device path in the usb tree
  409.  * @dev: the device whose path is being constructed
  410.  * @buf: where to put the string
  411.  * @size: how big is "buf"?
  412.  *
  413.  * Returns length of the string (> 0) or negative if size was too small.
  414.  *
  415.  * This identifier is intended to be "stable", reflecting physical paths in
  416.  * hardware such as physical bus addresses for host controllers or ports on
  417.  * USB hubs.  That makes it stay the same until systems are physically
  418.  * reconfigured, by re-cabling a tree of USB devices or by moving USB host
  419.  * controllers.  Adding and removing devices, including virtual root hubs
  420.  * in host controller driver modules, does not change these path identifers;
  421.  * neither does rebooting or re-enumerating.  These are more useful identifiers
  422.  * than changeable ("unstable") ones like bus numbers or device addresses.
  423.  *
  424.  * With a partial exception for devices connected to USB 2.0 root hubs, these
  425.  * identifiers are also predictable.  So long as the device tree isn't changed,
  426.  * plugging any USB device into a given hub port always gives it the same path.
  427.  * Because of the use of "companion" controllers, devices connected to ports on
  428.  * USB 2.0 root hubs (EHCI host controllers) will get one path ID if they are
  429.  * high speed, and a different one if they are full or low speed.
  430.  */
  431. static inline int usb_make_path (struct usb_device *dev, char *buf, size_t size)
  432. {
  433.     int actual;
  434.     actual = snprintf (buf, size, "usb-%s-%s", dev->bus->bus_name, dev->devpath);
  435.     return (actual >= (int)size) ? -1 : actual;
  436. }
  437.  
  438. /*-------------------------------------------------------------------------*/
  439.  
  440. #define USB_DEVICE_ID_MATCH_DEVICE        (USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT)
  441. #define USB_DEVICE_ID_MATCH_DEV_RANGE        (USB_DEVICE_ID_MATCH_DEV_LO | USB_DEVICE_ID_MATCH_DEV_HI)
  442. #define USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION    (USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_DEV_RANGE)
  443. #define USB_DEVICE_ID_MATCH_DEV_INFO \
  444.     (USB_DEVICE_ID_MATCH_DEV_CLASS | USB_DEVICE_ID_MATCH_DEV_SUBCLASS | USB_DEVICE_ID_MATCH_DEV_PROTOCOL)
  445. #define USB_DEVICE_ID_MATCH_INT_INFO \
  446.     (USB_DEVICE_ID_MATCH_INT_CLASS | USB_DEVICE_ID_MATCH_INT_SUBCLASS | USB_DEVICE_ID_MATCH_INT_PROTOCOL)
  447.  
  448. /**
  449.  * USB_DEVICE - macro used to describe a specific usb device
  450.  * @vend: the 16 bit USB Vendor ID
  451.  * @prod: the 16 bit USB Product ID
  452.  *
  453.  * This macro is used to create a struct usb_device_id that matches a
  454.  * specific device.
  455.  */
  456. #define USB_DEVICE(vend,prod) \
  457.     .match_flags = USB_DEVICE_ID_MATCH_DEVICE, .idVendor = (vend), .idProduct = (prod)
  458. /**
  459.  * USB_DEVICE_VER - macro used to describe a specific usb device with a version range
  460.  * @vend: the 16 bit USB Vendor ID
  461.  * @prod: the 16 bit USB Product ID
  462.  * @lo: the bcdDevice_lo value
  463.  * @hi: the bcdDevice_hi value
  464.  *
  465.  * This macro is used to create a struct usb_device_id that matches a
  466.  * specific device, with a version range.
  467.  */
  468. #define USB_DEVICE_VER(vend,prod,lo,hi) \
  469.     .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION, .idVendor = (vend), .idProduct = (prod), .bcdDevice_lo = (lo), .bcdDevice_hi = (hi)
  470.  
  471. /**
  472.  * USB_DEVICE_INFO - macro used to describe a class of usb devices
  473.  * @cl: bDeviceClass value
  474.  * @sc: bDeviceSubClass value
  475.  * @pr: bDeviceProtocol value
  476.  *
  477.  * This macro is used to create a struct usb_device_id that matches a
  478.  * specific class of devices.
  479.  */
  480. #define USB_DEVICE_INFO(cl,sc,pr) \
  481.     .match_flags = USB_DEVICE_ID_MATCH_DEV_INFO, .bDeviceClass = (cl), .bDeviceSubClass = (sc), .bDeviceProtocol = (pr)
  482.  
  483. /**
  484.  * USB_INTERFACE_INFO - macro used to describe a class of usb interfaces 
  485.  * @cl: bInterfaceClass value
  486.  * @sc: bInterfaceSubClass value
  487.  * @pr: bInterfaceProtocol value
  488.  *
  489.  * This macro is used to create a struct usb_device_id that matches a
  490.  * specific class of interfaces.
  491.  */
  492. #define USB_INTERFACE_INFO(cl,sc,pr) \
  493.     .match_flags = USB_DEVICE_ID_MATCH_INT_INFO, .bInterfaceClass = (cl), .bInterfaceSubClass = (sc), .bInterfaceProtocol = (pr)
  494.  
  495. /* -------------------------------------------------------------------------- */
  496.  
  497. /**
  498.  * struct usb_driver - identifies USB driver to usbcore
  499.  * @owner: Pointer to the module owner of this driver; initialize
  500.  *    it using THIS_MODULE.
  501.  * @name: The driver name should be unique among USB drivers,
  502.  *    and should normally be the same as the module name.
  503.  * @probe: Called to see if the driver is willing to manage a particular
  504.  *    interface on a device.  If it is, probe returns zero and uses
  505.  *    dev_set_drvdata() to associate driver-specific data with the
  506.  *    interface.  It may also use usb_set_interface() to specify the
  507.  *    appropriate altsetting.  If unwilling to manage the interface,
  508.  *    return a negative errno value.
  509.  * @disconnect: Called when the interface is no longer accessible, usually
  510.  *    because its device has been (or is being) disconnected or the
  511.  *    driver module is being unloaded.
  512.  * @ioctl: Used for drivers that want to talk to userspace through
  513.  *    the "usbfs" filesystem.  This lets devices provide ways to
  514.  *    expose information to user space regardless of where they
  515.  *    do (or don't) show up otherwise in the filesystem.
  516.  * @suspend: Called when the device is going to be suspended by the system.
  517.  * @resume: Called when the device is being resumed by the system.
  518.  * @id_table: USB drivers use ID table to support hotplugging.
  519.  *    Export this with MODULE_DEVICE_TABLE(usb,...).  This must be set
  520.  *    or your driver's probe function will never get called.
  521.  * @driver: the driver model core driver structure.
  522.  *
  523.  * USB drivers must provide a name, probe() and disconnect() methods,
  524.  * and an id_table.  Other driver fields are optional.
  525.  *
  526.  * The id_table is used in hotplugging.  It holds a set of descriptors,
  527.  * and specialized data may be associated with each entry.  That table
  528.  * is used by both user and kernel mode hotplugging support.
  529.  *
  530.  * The probe() and disconnect() methods are called in a context where
  531.  * they can sleep, but they should avoid abusing the privilege.  Most
  532.  * work to connect to a device should be done when the device is opened,
  533.  * and undone at the last close.  The disconnect code needs to address
  534.  * concurrency issues with respect to open() and close() methods, as
  535.  * well as forcing all pending I/O requests to complete (by unlinking
  536.  * them as necessary, and blocking until the unlinks complete).
  537.  */
  538. struct usb_driver {
  539.     struct module *owner;
  540.  
  541.     const char *name;
  542.  
  543.     int (*probe) (struct usb_interface *intf,
  544.               const struct usb_device_id *id);
  545.  
  546.     void (*disconnect) (struct usb_interface *intf);
  547.  
  548.     int (*ioctl) (struct usb_interface *intf, unsigned int code, void *buf);
  549.  
  550.     int (*suspend) (struct usb_interface *intf, u32 state);
  551.     int (*resume) (struct usb_interface *intf);
  552.  
  553.     const struct usb_device_id *id_table;
  554.  
  555.     struct device_driver driver;
  556. };
  557. #define    to_usb_driver(d) container_of(d, struct usb_driver, driver)
  558.  
  559. extern struct bus_type usb_bus_type;
  560.  
  561. /**
  562.  * struct usb_class_driver - identifies a USB driver that wants to use the USB major number
  563.  * @name: devfs name for this driver.  Will also be used by the driver
  564.  *    class code to create a usb class device.
  565.  * @fops: pointer to the struct file_operations of this driver.
  566.  * @mode: the mode for the devfs file to be created for this driver.
  567.  * @minor_base: the start of the minor range for this driver.
  568.  *
  569.  * This structure is used for the usb_register_dev() and
  570.  * usb_unregister_dev() functions, to consolidate a number of the
  571.  * parameters used for them.
  572.  */
  573. struct usb_class_driver {
  574.     char *name;
  575.     struct file_operations *fops;
  576.     mode_t mode;
  577.     int minor_base;    
  578. };
  579.  
  580. /*
  581.  * use these in module_init()/module_exit()
  582.  * and don't forget MODULE_DEVICE_TABLE(usb, ...)
  583.  */
  584. extern int usb_register(struct usb_driver *);
  585. extern void usb_deregister(struct usb_driver *);
  586.  
  587. extern int usb_register_dev(struct usb_interface *intf,
  588.                 struct usb_class_driver *class_driver);
  589. extern void usb_deregister_dev(struct usb_interface *intf,
  590.                    struct usb_class_driver *class_driver);
  591.  
  592. extern int usb_disabled(void);
  593.  
  594. /* -------------------------------------------------------------------------- */
  595.  
  596. /*
  597.  * URB support, for asynchronous request completions
  598.  */
  599.  
  600. /*
  601.  * urb->transfer_flags:
  602.  */
  603. #define URB_SHORT_NOT_OK    0x0001    /* report short reads as errors */
  604. #define URB_ISO_ASAP        0x0002    /* iso-only, urb->start_frame ignored */
  605. #define URB_NO_TRANSFER_DMA_MAP    0x0004    /* urb->transfer_dma valid on submit */
  606. #define URB_NO_SETUP_DMA_MAP    0x0008    /* urb->setup_dma valid on submit */
  607. #define URB_ASYNC_UNLINK    0x0010    /* usb_unlink_urb() returns asap */
  608. #define URB_NO_FSBR        0x0020    /* UHCI-specific */
  609. #define URB_ZERO_PACKET        0x0040    /* Finish bulk OUTs with short packet */
  610. #define URB_NO_INTERRUPT    0x0080    /* HINT: no non-error interrupt needed */
  611.  
  612. struct usb_iso_packet_descriptor {
  613.     unsigned int offset;
  614.     unsigned int length;        /* expected length */
  615.     unsigned int actual_length;
  616.     unsigned int status;
  617. };
  618.  
  619. struct urb;
  620. struct pt_regs;
  621.  
  622. typedef void (*usb_complete_t)(struct urb *, struct pt_regs *);
  623.  
  624. /**
  625.  * struct urb - USB Request Block
  626.  * @urb_list: For use by current owner of the URB.
  627.  * @pipe: Holds endpoint number, direction, type, and more.
  628.  *    Create these values with the eight macros available;
  629.  *    usb_{snd,rcv}TYPEpipe(dev,endpoint), where the TYPE is "ctrl"
  630.  *    (control), "bulk", "int" (interrupt), or "iso" (isochronous).
  631.  *    For example usb_sndbulkpipe() or usb_rcvintpipe().  Endpoint
  632.  *    numbers range from zero to fifteen.  Note that "in" endpoint two
  633.  *    is a different endpoint (and pipe) from "out" endpoint two.
  634.  *    The current configuration controls the existence, type, and
  635.  *    maximum packet size of any given endpoint.
  636.  * @dev: Identifies the USB device to perform the request.
  637.  * @status: This is read in non-iso completion functions to get the
  638.  *    status of the particular request.  ISO requests only use it
  639.  *    to tell whether the URB was unlinked; detailed status for
  640.  *    each frame is in the fields of the iso_frame-desc.
  641.  * @transfer_flags: A variety of flags may be used to affect how URB
  642.  *    submission, unlinking, or operation are handled.  Different
  643.  *    kinds of URB can use different flags.
  644.  * @transfer_buffer:  This identifies the buffer to (or from) which
  645.  *     the I/O request will be performed (unless URB_NO_TRANSFER_DMA_MAP
  646.  *    is set).  This buffer must be suitable for DMA; allocate it with
  647.  *    kmalloc() or equivalent.  For transfers to "in" endpoints, contents
  648.  *    of this buffer will be modified.  This buffer is used for the data
  649.  *    stage of control transfers.
  650.  * @transfer_dma: When transfer_flags includes URB_NO_TRANSFER_DMA_MAP,
  651.  *    the device driver is saying that it provided this DMA address,
  652.  *    which the host controller driver should use in preference to the
  653.  *    transfer_buffer.
  654.  * @transfer_buffer_length: How big is transfer_buffer.  The transfer may
  655.  *    be broken up into chunks according to the current maximum packet
  656.  *    size for the endpoint, which is a function of the configuration
  657.  *    and is encoded in the pipe.  When the length is zero, neither
  658.  *    transfer_buffer nor transfer_dma is used.
  659.  * @actual_length: This is read in non-iso completion functions, and
  660.  *    it tells how many bytes (out of transfer_buffer_length) were
  661.  *    transferred.  It will normally be the same as requested, unless
  662.  *    either an error was reported or a short read was performed.
  663.  *    The URB_SHORT_NOT_OK transfer flag may be used to make such
  664.  *    short reads be reported as errors. 
  665.  * @setup_packet: Only used for control transfers, this points to eight bytes
  666.  *    of setup data.  Control transfers always start by sending this data
  667.  *    to the device.  Then transfer_buffer is read or written, if needed.
  668.  * @setup_dma: For control transfers with URB_NO_SETUP_DMA_MAP set, the
  669.  *    device driver has provided this DMA address for the setup packet.
  670.  *    The host controller driver should use this in preference to
  671.  *    setup_packet.
  672.  * @start_frame: Returns the initial frame for isochronous transfers.
  673.  * @number_of_packets: Lists the number of ISO transfer buffers.
  674.  * @interval: Specifies the polling interval for interrupt or isochronous
  675.  *    transfers.  The units are frames (milliseconds) for for full and low
  676.  *    speed devices, and microframes (1/8 millisecond) for highspeed ones.
  677.  * @error_count: Returns the number of ISO transfers that reported errors.
  678.  * @context: For use in completion functions.  This normally points to
  679.  *    request-specific driver context.
  680.  * @complete: Completion handler. This URB is passed as the parameter to the
  681.  *    completion function.  The completion function may then do what
  682.  *    it likes with the URB, including resubmitting or freeing it.
  683.  * @iso_frame_desc: Used to provide arrays of ISO transfer buffers and to 
  684.  *    collect the transfer status for each buffer.
  685.  *
  686.  * This structure identifies USB transfer requests.  URBs must be allocated by
  687.  * calling usb_alloc_urb() and freed with a call to usb_free_urb().
  688.  * Initialization may be done using various usb_fill_*_urb() functions.  URBs
  689.  * are submitted using usb_submit_urb(), and pending requests may be canceled
  690.  * using usb_unlink_urb() or usb_kill_urb().
  691.  *
  692.  * Data Transfer Buffers:
  693.  *
  694.  * Normally drivers provide I/O buffers allocated with kmalloc() or otherwise
  695.  * taken from the general page pool.  That is provided by transfer_buffer
  696.  * (control requests also use setup_packet), and host controller drivers
  697.  * perform a dma mapping (and unmapping) for each buffer transferred.  Those
  698.  * mapping operations can be expensive on some platforms (perhaps using a dma
  699.  * bounce buffer or talking to an IOMMU),
  700.  * although they're cheap on commodity x86 and ppc hardware.
  701.  *
  702.  * Alternatively, drivers may pass the URB_NO_xxx_DMA_MAP transfer flags,
  703.  * which tell the host controller driver that no such mapping is needed since
  704.  * the device driver is DMA-aware.  For example, a device driver might
  705.  * allocate a DMA buffer with usb_buffer_alloc() or call usb_buffer_map().
  706.  * When these transfer flags are provided, host controller drivers will
  707.  * attempt to use the dma addresses found in the transfer_dma and/or
  708.  * setup_dma fields rather than determining a dma address themselves.  (Note
  709.  * that transfer_buffer and setup_packet must still be set because not all
  710.  * host controllers use DMA, nor do virtual root hubs).
  711.  *
  712.  * Initialization:
  713.  *
  714.  * All URBs submitted must initialize the dev, pipe, transfer_flags (may be
  715.  * zero), and complete fields.
  716.  * The URB_ASYNC_UNLINK transfer flag affects later invocations of
  717.  * the usb_unlink_urb() routine.  Note: Failure to set URB_ASYNC_UNLINK
  718.  * with usb_unlink_urb() is deprecated.  For synchronous unlinks use
  719.  * usb_kill_urb() instead.
  720.  *
  721.  * All URBs must also initialize 
  722.  * transfer_buffer and transfer_buffer_length.  They may provide the
  723.  * URB_SHORT_NOT_OK transfer flag, indicating that short reads are
  724.  * to be treated as errors; that flag is invalid for write requests.
  725.  *
  726.  * Bulk URBs may
  727.  * use the URB_ZERO_PACKET transfer flag, indicating that bulk OUT transfers
  728.  * should always terminate with a short packet, even if it means adding an
  729.  * extra zero length packet.
  730.  *
  731.  * Control URBs must provide a setup_packet.  The setup_packet and
  732.  * transfer_buffer may each be mapped for DMA or not, independently of
  733.  * the other.  The transfer_flags bits URB_NO_TRANSFER_DMA_MAP and
  734.  * URB_NO_SETUP_DMA_MAP indicate which buffers have already been mapped.
  735.  * URB_NO_SETUP_DMA_MAP is ignored for non-control URBs.
  736.  *
  737.  * Interrupt URBs must provide an interval, saying how often (in milliseconds
  738.  * or, for highspeed devices, 125 microsecond units)
  739.  * to poll for transfers.  After the URB has been submitted, the interval
  740.  * field reflects how the transfer was actually scheduled.
  741.  * The polling interval may be more frequent than requested.
  742.  * For example, some controllers have a maximum interval of 32 milliseconds,
  743.  * while others support intervals of up to 1024 milliseconds.
  744.  * Isochronous URBs also have transfer intervals.  (Note that for isochronous
  745.  * endpoints, as well as high speed interrupt endpoints, the encoding of
  746.  * the transfer interval in the endpoint descriptor is logarithmic.
  747.  * Device drivers must convert that value to linear units themselves.)
  748.  *
  749.  * Isochronous URBs normally use the URB_ISO_ASAP transfer flag, telling
  750.  * the host controller to schedule the transfer as soon as bandwidth
  751.  * utilization allows, and then set start_frame to reflect the actual frame
  752.  * selected during submission.  Otherwise drivers must specify the start_frame
  753.  * and handle the case where the transfer can't begin then.  However, drivers
  754.  * won't know how bandwidth is currently allocated, and while they can
  755.  * find the current frame using usb_get_current_frame_number () they can't
  756.  * know the range for that frame number.  (Ranges for frame counter values
  757.  * are HC-specific, and can go from 256 to 65536 frames from "now".)
  758.  *
  759.  * Isochronous URBs have a different data transfer model, in part because
  760.  * the quality of service is only "best effort".  Callers provide specially
  761.  * allocated URBs, with number_of_packets worth of iso_frame_desc structures
  762.  * at the end.  Each such packet is an individual ISO transfer.  Isochronous
  763.  * URBs are normally queued, submitted by drivers to arrange that
  764.  * transfers are at least double buffered, and then explicitly resubmitted
  765.  * in completion handlers, so
  766.  * that data (such as audio or video) streams at as constant a rate as the
  767.  * host controller scheduler can support.
  768.  *
  769.  * Completion Callbacks:
  770.  *
  771.  * The completion callback is made in_interrupt(), and one of the first
  772.  * things that a completion handler should do is check the status field.
  773.  * The status field is provided for all URBs.  It is used to report
  774.  * unlinked URBs, and status for all non-ISO transfers.  It should not
  775.  * be examined before the URB is returned to the completion handler.
  776.  *
  777.  * The context field is normally used to link URBs back to the relevant
  778.  * driver or request state.
  779.  *
  780.  * When the completion callback is invoked for non-isochronous URBs, the
  781.  * actual_length field tells how many bytes were transferred.  This field
  782.  * is updated even when the URB terminated with an error or was unlinked.
  783.  *
  784.  * ISO transfer status is reported in the status and actual_length fields
  785.  * of the iso_frame_desc array, and the number of errors is reported in
  786.  * error_count.  Completion callbacks for ISO transfers will normally
  787.  * (re)submit URBs to ensure a constant transfer rate.
  788.  */
  789. struct urb
  790. {
  791.     /* private, usb core and host controller only fields in the urb */
  792.     struct kref kref;        /* reference count of the URB */
  793.     spinlock_t lock;        /* lock for the URB */
  794.     void *hcpriv;            /* private data for host controller */
  795.     struct list_head urb_list;    /* list pointer to all active urbs */
  796.     int bandwidth;            /* bandwidth for INT/ISO request */
  797.     atomic_t use_count;        /* concurrent submissions counter */
  798.     u8 reject;            /* submissions will fail */
  799.  
  800.     /* public, documented fields in the urb that can be used by drivers */
  801.     struct usb_device *dev;     /* (in) pointer to associated device */
  802.     unsigned int pipe;        /* (in) pipe information */
  803.     int status;            /* (return) non-ISO status */
  804.     unsigned int transfer_flags;    /* (in) URB_SHORT_NOT_OK | ...*/
  805.     void *transfer_buffer;        /* (in) associated data buffer */
  806.     dma_addr_t transfer_dma;    /* (in) dma addr for transfer_buffer */
  807.     int transfer_buffer_length;    /* (in) data buffer length */
  808.     int actual_length;        /* (return) actual transfer length */
  809.     unsigned char *setup_packet;    /* (in) setup packet (control only) */
  810.     dma_addr_t setup_dma;        /* (in) dma addr for setup_packet */
  811.     int start_frame;        /* (modify) start frame (ISO) */
  812.     int number_of_packets;        /* (in) number of ISO packets */
  813.     int interval;            /* (modify) transfer interval (INT/ISO) */
  814.     int error_count;        /* (return) number of ISO errors */
  815.     void *context;            /* (in) context for completion */
  816.     usb_complete_t complete;    /* (in) completion routine */
  817.     struct usb_iso_packet_descriptor iso_frame_desc[0];    /* (in) ISO ONLY */
  818. };
  819.  
  820. /* -------------------------------------------------------------------------- */
  821.  
  822. /**
  823.  * usb_fill_control_urb - initializes a control urb
  824.  * @urb: pointer to the urb to initialize.
  825.  * @dev: pointer to the struct usb_device for this urb.
  826.  * @pipe: the endpoint pipe
  827.  * @setup_packet: pointer to the setup_packet buffer
  828.  * @transfer_buffer: pointer to the transfer buffer
  829.  * @buffer_length: length of the transfer buffer
  830.  * @complete: pointer to the usb_complete_t function
  831.  * @context: what to set the urb context to.
  832.  *
  833.  * Initializes a control urb with the proper information needed to submit
  834.  * it to a device.
  835.  */
  836. static inline void usb_fill_control_urb (struct urb *urb,
  837.                      struct usb_device *dev,
  838.                      unsigned int pipe,
  839.                      unsigned char *setup_packet,
  840.                      void *transfer_buffer,
  841.                      int buffer_length,
  842.                      usb_complete_t complete,
  843.                      void *context)
  844. {
  845.     spin_lock_init(&urb->lock);
  846.     urb->dev = dev;
  847.     urb->pipe = pipe;
  848.     urb->setup_packet = setup_packet;
  849.     urb->transfer_buffer = transfer_buffer;
  850.     urb->transfer_buffer_length = buffer_length;
  851.     urb->complete = complete;
  852.     urb->context = context;
  853. }
  854.  
  855. /**
  856.  * usb_fill_bulk_urb - macro to help initialize a bulk urb
  857.  * @urb: pointer to the urb to initialize.
  858.  * @dev: pointer to the struct usb_device for this urb.
  859.  * @pipe: the endpoint pipe
  860.  * @transfer_buffer: pointer to the transfer buffer
  861.  * @buffer_length: length of the transfer buffer
  862.  * @complete: pointer to the usb_complete_t function
  863.  * @context: what to set the urb context to.
  864.  *
  865.  * Initializes a bulk urb with the proper information needed to submit it
  866.  * to a device.
  867.  */
  868. static inline void usb_fill_bulk_urb (struct urb *urb,
  869.                       struct usb_device *dev,
  870.                       unsigned int pipe,
  871.                       void *transfer_buffer,
  872.                       int buffer_length,
  873.                       usb_complete_t complete,
  874.                       void *context)
  875. {
  876.     spin_lock_init(&urb->lock);
  877.     urb->dev = dev;
  878.     urb->pipe = pipe;
  879.     urb->transfer_buffer = transfer_buffer;
  880.     urb->transfer_buffer_length = buffer_length;
  881.     urb->complete = complete;
  882.     urb->context = context;
  883. }
  884.  
  885. /**
  886.  * usb_fill_int_urb - macro to help initialize a interrupt urb
  887.  * @urb: pointer to the urb to initialize.
  888.  * @dev: pointer to the struct usb_device for this urb.
  889.  * @pipe: the endpoint pipe
  890.  * @transfer_buffer: pointer to the transfer buffer
  891.  * @buffer_length: length of the transfer buffer
  892.  * @complete: pointer to the usb_complete_t function
  893.  * @context: what to set the urb context to.
  894.  * @interval: what to set the urb interval to, encoded like
  895.  *    the endpoint descriptor's bInterval value.
  896.  *
  897.  * Initializes a interrupt urb with the proper information needed to submit
  898.  * it to a device.
  899.  * Note that high speed interrupt endpoints use a logarithmic encoding of
  900.  * the endpoint interval, and express polling intervals in microframes
  901.  * (eight per millisecond) rather than in frames (one per millisecond).
  902.  */
  903. static inline void usb_fill_int_urb (struct urb *urb,
  904.                      struct usb_device *dev,
  905.                      unsigned int pipe,
  906.                      void *transfer_buffer,
  907.                      int buffer_length,
  908.                      usb_complete_t complete,
  909.                      void *context,
  910.                      int interval)
  911. {
  912.     spin_lock_init(&urb->lock);
  913.     urb->dev = dev;
  914.     urb->pipe = pipe;
  915.     urb->transfer_buffer = transfer_buffer;
  916.     urb->transfer_buffer_length = buffer_length;
  917.     urb->complete = complete;
  918.     urb->context = context;
  919.     if (dev->speed == USB_SPEED_HIGH)
  920.         urb->interval = 1 << (interval - 1);
  921.     else
  922.         urb->interval = interval;
  923.     urb->start_frame = -1;
  924. }
  925.  
  926. extern void usb_init_urb(struct urb *urb);
  927. extern struct urb *usb_alloc_urb(int iso_packets, int mem_flags);
  928. extern void usb_free_urb(struct urb *urb);
  929. #define usb_put_urb usb_free_urb
  930. extern struct urb *usb_get_urb(struct urb *urb);
  931. extern int usb_submit_urb(struct urb *urb, int mem_flags);
  932. extern int usb_unlink_urb(struct urb *urb);
  933. extern void usb_kill_urb(struct urb *urb);
  934.  
  935. #define HAVE_USB_BUFFERS
  936. void *usb_buffer_alloc (struct usb_device *dev, size_t size,
  937.     int mem_flags, dma_addr_t *dma);
  938. void usb_buffer_free (struct usb_device *dev, size_t size,
  939.     void *addr, dma_addr_t dma);
  940.  
  941. struct urb *usb_buffer_map (struct urb *urb);
  942. #if 0
  943. void usb_buffer_dmasync (struct urb *urb);
  944. #endif
  945. void usb_buffer_unmap (struct urb *urb);
  946.  
  947. struct scatterlist;
  948. int usb_buffer_map_sg (struct usb_device *dev, unsigned pipe,
  949.         struct scatterlist *sg, int nents);
  950. #if 0
  951. void usb_buffer_dmasync_sg (struct usb_device *dev, unsigned pipe,
  952.         struct scatterlist *sg, int n_hw_ents);
  953. #endif
  954. void usb_buffer_unmap_sg (struct usb_device *dev, unsigned pipe,
  955.         struct scatterlist *sg, int n_hw_ents);
  956.  
  957. /*-------------------------------------------------------------------*
  958.  *                         SYNCHRONOUS CALL SUPPORT                  *
  959.  *-------------------------------------------------------------------*/
  960.  
  961. extern int usb_control_msg(struct usb_device *dev, unsigned int pipe,
  962.     __u8 request, __u8 requesttype, __u16 value, __u16 index,
  963.     void *data, __u16 size, int timeout);
  964. extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
  965.     void *data, int len, int *actual_length,
  966.     int timeout);
  967.  
  968. /* selective suspend/resume */
  969. extern int usb_suspend_device(struct usb_device *dev, u32 state);
  970. extern int usb_resume_device(struct usb_device *dev);
  971.  
  972.  
  973. /* wrappers around usb_control_msg() for the most common standard requests */
  974. extern int usb_get_descriptor(struct usb_device *dev, unsigned char desctype,
  975.     unsigned char descindex, void *buf, int size);
  976. extern int usb_get_status(struct usb_device *dev,
  977.     int type, int target, void *data);
  978. extern int usb_get_string(struct usb_device *dev,
  979.     unsigned short langid, unsigned char index, void *buf, int size);
  980. extern int usb_string(struct usb_device *dev, int index,
  981.     char *buf, size_t size);
  982.  
  983. /* wrappers that also update important state inside usbcore */
  984. extern int usb_clear_halt(struct usb_device *dev, int pipe);
  985. extern int usb_reset_configuration(struct usb_device *dev);
  986. extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate);
  987.  
  988. /*
  989.  * timeouts, in seconds, used for sending/receiving control messages
  990.  * they typically complete within a few frames (msec) after they're issued
  991.  * USB identifies 5 second timeouts, maybe more in a few cases, and a few
  992.  * slow devices (like some MGE Ellipse UPSes) actually push that limit.
  993.  */
  994. #define USB_CTRL_GET_TIMEOUT    5
  995. #define USB_CTRL_SET_TIMEOUT    5
  996.  
  997.  
  998. /**
  999.  * struct usb_sg_request - support for scatter/gather I/O
  1000.  * @status: zero indicates success, else negative errno
  1001.  * @bytes: counts bytes transferred.
  1002.  *
  1003.  * These requests are initialized using usb_sg_init(), and then are used
  1004.  * as request handles passed to usb_sg_wait() or usb_sg_cancel().  Most
  1005.  * members of the request object aren't for driver access.
  1006.  *
  1007.  * The status and bytecount values are valid only after usb_sg_wait()
  1008.  * returns.  If the status is zero, then the bytecount matches the total
  1009.  * from the request.
  1010.  *
  1011.  * After an error completion, drivers may need to clear a halt condition
  1012.  * on the endpoint.
  1013.  */
  1014. struct usb_sg_request {
  1015.     int            status;
  1016.     size_t            bytes;
  1017.  
  1018.     /* 
  1019.      * members below are private to usbcore,
  1020.      * and are not provided for driver access!
  1021.      */
  1022.     spinlock_t        lock;
  1023.  
  1024.     struct usb_device    *dev;
  1025.     int            pipe;
  1026.     struct scatterlist    *sg;
  1027.     int            nents;
  1028.  
  1029.     int            entries;
  1030.     struct urb        **urbs;
  1031.  
  1032.     int            count;
  1033.     struct completion    complete;
  1034. };
  1035.  
  1036. int usb_sg_init (
  1037.     struct usb_sg_request    *io,
  1038.     struct usb_device    *dev,
  1039.     unsigned        pipe, 
  1040.     unsigned        period,
  1041.     struct scatterlist    *sg,
  1042.     int            nents,
  1043.     size_t            length,
  1044.     int            mem_flags
  1045. );
  1046. void usb_sg_cancel (struct usb_sg_request *io);
  1047. void usb_sg_wait (struct usb_sg_request *io);
  1048.  
  1049.  
  1050. /* -------------------------------------------------------------------------- */
  1051.  
  1052. /*
  1053.  * For various legacy reasons, Linux has a small cookie that's paired with
  1054.  * a struct usb_device to identify an endpoint queue.  Queue characteristics
  1055.  * are defined by the endpoint's descriptor.  This cookie is called a "pipe",
  1056.  * an unsigned int encoded as:
  1057.  *
  1058.  *  - direction:    bit 7        (0 = Host-to-Device [Out],
  1059.  *                     1 = Device-to-Host [In] ...
  1060.  *                    like endpoint bEndpointAddress)
  1061.  *  - device address:    bits 8-14       ... bit positions known to uhci-hcd
  1062.  *  - endpoint:        bits 15-18      ... bit positions known to uhci-hcd
  1063.  *  - pipe type:    bits 30-31    (00 = isochronous, 01 = interrupt,
  1064.  *                     10 = control, 11 = bulk)
  1065.  *
  1066.  * Given the device address and endpoint descriptor, pipes are redundant.
  1067.  */
  1068.  
  1069. /* NOTE:  these are not the standard USB_ENDPOINT_XFER_* values!! */
  1070. /* (yet ... they're the values used by usbfs) */
  1071. #define PIPE_ISOCHRONOUS        0
  1072. #define PIPE_INTERRUPT            1
  1073. #define PIPE_CONTROL            2
  1074. #define PIPE_BULK            3
  1075.  
  1076. #define usb_pipein(pipe)    ((pipe) & USB_DIR_IN)
  1077. #define usb_pipeout(pipe)    (!usb_pipein(pipe))
  1078.  
  1079. #define usb_pipedevice(pipe)    (((pipe) >> 8) & 0x7f)
  1080. #define usb_pipeendpoint(pipe)    (((pipe) >> 15) & 0xf)
  1081.  
  1082. #define usb_pipetype(pipe)    (((pipe) >> 30) & 3)
  1083. #define usb_pipeisoc(pipe)    (usb_pipetype((pipe)) == PIPE_ISOCHRONOUS)
  1084. #define usb_pipeint(pipe)    (usb_pipetype((pipe)) == PIPE_INTERRUPT)
  1085. #define usb_pipecontrol(pipe)    (usb_pipetype((pipe)) == PIPE_CONTROL)
  1086. #define usb_pipebulk(pipe)    (usb_pipetype((pipe)) == PIPE_BULK)
  1087.  
  1088. /* The D0/D1 toggle bits ... USE WITH CAUTION (they're almost hcd-internal) */
  1089. #define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> (ep)) & 1)
  1090. #define    usb_dotoggle(dev, ep, out)  ((dev)->toggle[out] ^= (1 << (ep)))
  1091. #define usb_settoggle(dev, ep, out, bit) ((dev)->toggle[out] = ((dev)->toggle[out] & ~(1 << (ep))) | ((bit) << (ep)))
  1092.  
  1093.  
  1094. static inline unsigned int __create_pipe(struct usb_device *dev, unsigned int endpoint)
  1095. {
  1096.     return (dev->devnum << 8) | (endpoint << 15);
  1097. }
  1098.  
  1099. /* Create various pipes... */
  1100. #define usb_sndctrlpipe(dev,endpoint)    ((PIPE_CONTROL << 30) | __create_pipe(dev,endpoint))
  1101. #define usb_rcvctrlpipe(dev,endpoint)    ((PIPE_CONTROL << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN)
  1102. #define usb_sndisocpipe(dev,endpoint)    ((PIPE_ISOCHRONOUS << 30) | __create_pipe(dev,endpoint))
  1103. #define usb_rcvisocpipe(dev,endpoint)    ((PIPE_ISOCHRONOUS << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN)
  1104. #define usb_sndbulkpipe(dev,endpoint)    ((PIPE_BULK << 30) | __create_pipe(dev,endpoint))
  1105. #define usb_rcvbulkpipe(dev,endpoint)    ((PIPE_BULK << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN)
  1106. #define usb_sndintpipe(dev,endpoint)    ((PIPE_INTERRUPT << 30) | __create_pipe(dev,endpoint))
  1107. #define usb_rcvintpipe(dev,endpoint)    ((PIPE_INTERRUPT << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN)
  1108.  
  1109. /*-------------------------------------------------------------------------*/
  1110.  
  1111. static inline __u16
  1112. usb_maxpacket(struct usb_device *udev, int pipe, int is_out)
  1113. {
  1114.     struct usb_host_endpoint    *ep;
  1115.     unsigned            epnum = usb_pipeendpoint(pipe);
  1116.  
  1117.     if (is_out) {
  1118.         WARN_ON(usb_pipein(pipe));
  1119.         ep = udev->ep_out[epnum];
  1120.     } else {
  1121.         WARN_ON(usb_pipeout(pipe));
  1122.         ep = udev->ep_in[epnum];
  1123.     }
  1124.     if (!ep)
  1125.         return 0;
  1126.  
  1127.     /* NOTE:  only 0x07ff bits are for packet size... */
  1128.     return le16_to_cpu(ep->desc.wMaxPacketSize);
  1129. }
  1130.  
  1131. /* -------------------------------------------------------------------------- */
  1132.  
  1133. #ifdef DEBUG
  1134. #define dbg(format, arg...) printk(KERN_DEBUG "%s: " format "\n" , __FILE__ , ## arg)
  1135. #else
  1136. #define dbg(format, arg...) do {} while (0)
  1137. #endif
  1138.  
  1139. #define err(format, arg...) printk(KERN_ERR "%s: " format "\n" , __FILE__ , ## arg)
  1140. #define info(format, arg...) printk(KERN_INFO "%s: " format "\n" , __FILE__ , ## arg)
  1141. #define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n" , __FILE__ , ## arg)
  1142.  
  1143.  
  1144. #endif  /* __KERNEL__ */
  1145.  
  1146. #endif
  1147.